package cn.seaboot.admin.user.bean;


import io.swagger.v3.oas.annotations.media.Schema;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * organization n. 组织；机构；体制；团体
 * <p>
 * 机构用于管理包含多家公司的大型系统，不同的公司或者组织，用org_id进行区分。
 * 为了避免不同机构间的数据互相影响，可以在所有的查询条件中添加org_id。
 * 通常1个系统只会有1个机构，1个机构包含n个用户分组。
 * 目前表格只对最基础的数据进行管理，实际应用需按照业务场景进行调整。
 * <p>
 * 注意事项：ID尽量不要自增，自增ID逻辑过于简单，容易因为简单的错误，导致数据出错。
 * <p>
 * POJO
 * 组织机构 [t_sys_org]
 *
 * @author Mr.css on  2019-03-25 11:40
 */
@Schema(description = "组织机构 [t_sys_org] 实体类")
public class Organization implements Serializable {
    private static final long serialVersionUID = 2238205692018821777L;

    /**
     * ID
     */

    @NotNull()
    @Schema(description = "ID")
    private String id;
    /**
     * 简称
     */
    @Size(max = 32)
    @Schema(description = "简称")
    private String shortName;
    /**
     * 名称
     */
    @Size(max = 64)
    @Schema(description = "名称")
    private String organizationName;
    /**
     * 描述
     */
    @Size(max = 128)
    @Schema(description = "描述")
    private String description;
    /**
     * 省ID
     */
    @Schema(description = "省ID")
    private String provinceId;
    /**
     * 省
     */
    @Size(max = 16)
    @Schema(description = "省")
    private String provinceName;
    /**
     * 市ID
     */
    @Schema(description = "市ID")
    private String cityId;
    /**
     * 市
     */
    @Size(max = 16)
    @Schema(description = "市")
    private String cityName;
    /**
     * 县ID
     */
    @Schema(description = "县ID")
    private String countyId;
    /**
     * 县
     */
    @Size(max = 16)
    @Schema(description = "县")
    private String countyName;
    /**
     * 是否删除
     */
    @NotNull
    @Schema(description = "是否删除")
    private Boolean disabled;

    /**
     * 创建日期
     */
    @NotNull
    @Schema(description = "创建日期")
    private LocalDateTime gmtCreate;
    /**
     * 修改日期
     */
    @Schema(description = "修改日期")
    private LocalDateTime gmtModified;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getShortName() {
        return shortName;
    }

    public void setShortName(String shortName) {
        this.shortName = shortName;
    }

    public String getOrganizationName() {
        return organizationName;
    }

    public void setOrganizationName(String organizationName) {
        this.organizationName = organizationName;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getProvinceId() {
        return provinceId;
    }

    public void setProvinceId(String provinceId) {
        this.provinceId = provinceId;
    }

    public String getProvinceName() {
        return provinceName;
    }

    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }

    public String getCityId() {
        return cityId;
    }

    public void setCityId(String cityId) {
        this.cityId = cityId;
    }

    public String getCityName() {
        return cityName;
    }

    public void setCityName(String cityName) {
        this.cityName = cityName;
    }

    public String getCountyId() {
        return countyId;
    }

    public void setCountyId(String countyId) {
        this.countyId = countyId;
    }

    public String getCountyName() {
        return countyName;
    }

    public void setCountyName(String countyName) {
        this.countyName = countyName;
    }

    public Boolean getDisabled() {
        return disabled;
    }

    public void setDisabled(Boolean disabled) {
        this.disabled = disabled;
    }

    public LocalDateTime getGmtCreate() {
        return gmtCreate;
    }

    public void setGmtCreate(LocalDateTime gmtCreate) {
        this.gmtCreate = gmtCreate;
    }

    public LocalDateTime getGmtModified() {
        return gmtModified;
    }

    public void setGmtModified(LocalDateTime gmtModified) {
        this.gmtModified = gmtModified;
    }

    @Override
    public String toString() {
        return "Organization{" +
                "id='" + id + '\'' +
                ", shortName='" + shortName + '\'' +
                ", organizationName='" + organizationName + '\'' +
                ", description='" + description + '\'' +
                ", provinceId='" + provinceId + '\'' +
                ", provinceName='" + provinceName + '\'' +
                ", cityId='" + cityId + '\'' +
                ", cityName='" + cityName + '\'' +
                ", countyId='" + countyId + '\'' +
                ", countyName='" + countyName + '\'' +
                ", disabled=" + disabled +
                ", gmtCreate=" + gmtCreate +
                ", gmtModified=" + gmtModified +
                '}';
    }
}
